﻿<!DOCTYPE html>

<html lang="en">
<head>
    <!-- The jQuery library is a prerequisite for all jqSuite products -->
    <script type="text/ecmascript" src="../../../js/jquery.min.js"></script> 
    <!-- This is the Javascript file of jqGrid -->   
    <script type="text/ecmascript" src="../../../js/trirand/jquery.jqGrid.min.js"></script>
    <!-- This is the localization file of the grid controlling messages, labels, etc.
    <!-- We support more than 40 localizations -->
    <script type="text/ecmascript" src="../../../js/trirand/i18n/grid.locale-en.js"></script>
    <!-- A link to a jQuery UI ThemeRoller theme, more than 22 built-in and many more custom -->
    <link rel="stylesheet" type="text/css" media="screen" href="../../../css/jquery-ui.css" />
    <!-- The link to the CSS that the grid needs -->
    <link rel="stylesheet" type="text/css" media="screen" href="../../../css/trirand/ui.jqgrid.css" />
    <meta charset="utf-8" />
    <title>jqGrid Loading Data - Dialogs - Dependent DropDowns</title>
</head>
<body>

    <table id="jqGrid"></table>
    <div id="jqGridPager"></div>

    <script type="text/javascript">

        $(document).ready(function () {
            $("#jqGrid").jqGrid({
                url: 'data.json',
                editurl: 'clientArray',
                datatype: "json",
                colModel: [
                    {
						label: 'Customer ID',
                        name: 'CustomerID',
                        width: 75,
						key: true
                    },
                    {
						label: 'Company Name',
                        name: 'CompanyName',
                        width: 140,
                        editable: true // must set editable to true if you want to make the field editable
                    },
                    {
						label : 'Phone',
                        name: 'Phone',
                        width: 100,
                        editable: true
                    },
                    {
						label: 'Postal Code',
                        name: 'PostalCode',
                        width: 80,
                        editable: true
                    },
                    {
                        name: 'Country',
                        width: 200,
                        editable: true,
                        edittype: "select",
                        editoptions: {
							dataUrl : 'country.json',
                            buildSelect : function (cntry) {
								var s = '<select>';
								if( $.isPlainObject(cntry)) {
									for( var key in cntry) {
										s += '<option value="'+key+'" >'+cntry[key]+'</option>';
									}
								}
								s += '</select>';
								return s;
							},
							dataEvents : [
								{
									'type' : 'change',
									'fn' : function ( el ) {
										var Country = $(el.target).val();
										var id = $(el.target).closest("tr.jqgrow").attr("id");
										if(id && Country) {
											fillCity($("#"+id+"_City") , Country );
										}
									}
								}
							]
                        }
                    },
                    {
                        name: 'City',
                        width: 200,
                        editable: true,
                        edittype: "select",
                        editoptions: {
                            value: ":Select a City",
							dataInit : function( element, options ) {
								var Country = rowdata.Country;
								fillCity( element, Country );
							}
                        }
                    }
                ],
				ajaxSelectOptions : {
					dataType : 'json'
				},
				loadonce: true,
				viewrecorde: true,
                width: 780,
                height: 200,
                rowNum: 10,
				onSelectRow : editRow,
                pager: "#jqGridPager"
            });
            var lastSelection, rowdata;

            function editRow(id) {
                if (id && id !== lastSelection) {
                    var grid = $("#jqGrid");
					rowdata =  grid.getRowData( id );
                    grid.jqGrid('restoreRow',lastSelection);
                    grid.jqGrid('editRow',id, {keys:true, focusField: 4});
                    lastSelection = id;
                }
            }
			function fillCity( element, Country ) {
				$.ajax({
					url : Country+'.json',
					dataType : "json",
					type : "GET",
						success : function(data) {
						var s = '';
						if( $.isPlainObject(data)) {
							var selected;
							for( var key in data) {
								selected = '';
								if( key === rowdata.City) {
									selected = ' selected="selected"';
								}
								s += '<option value="'+key+'"'+ selected +' >'+data[key]+'</option>';
							}
						}
						$(element).html( s);
					}
				});				
			}

        });

    </script>

    <!-- This code is related to code tabs -->
    <br />
    <span style="font-size: 12px; font-family: Tahoma">Click on the Tabs below the see the relevant code for the example:</span>
    <br /><br />
    <div id="codetabs" style="width:700px; height: 400px; font-size:65%;"></div>
    <script type="text/ecmascript" src="../../../js/jquery-ui.min.js"></script>
    <script type="text/ecmascript" src="../../../js/prettify/prettify.js"></script>
    <link rel="stylesheet" href="../../../css/prettify.css" />
        <script type="text/ecmascript" src="../../../js/codetabs.js"></script><script type="text/ecmascript" src="../../../js/themeswitchertool.js"></script>
    
    <script type="text/javascript">

        var tabData =
            [
                { name: "HTML", url: "index.html", lang: "lang-html" },
                { name: "Data", url: "data.json", lang: "lang-json" },
				{ name: "Description", url: "description.html", lang: "lang-html" }
            ];

        codeTabs(tabData);

    </script>
    <!-- End of code related to code tabs -->
</body>
</html>